home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 1999 #5 / 1999 CD 5 (black).iso / Delphi3 / install / data.z / FILTER1.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-05  |  4.1 KB  |  152 lines

  1. unit Filter1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, Buttons, DB;
  8.  
  9. type
  10.   TfmFilterFrm = class(TForm)
  11.     Label1: TLabel;
  12.     Label2: TLabel;
  13.     ListBox1: TListBox;
  14.     ListBox2: TListBox;
  15.     Label3: TLabel;
  16.     Memo1: TMemo;
  17.     GroupBox1: TGroupBox;
  18.     cbCaseSensitive: TCheckBox;
  19.     cbNoPartialCompare: TCheckBox;
  20.     ComboBox1: TComboBox;
  21.     Label4: TLabel;
  22.     BtnApplyFilter: TButton;
  23.     BtnClear: TButton;
  24.     BtnClose: TButton;
  25.     procedure AddFieldName(Sender: TObject);
  26.     procedure ListBox2DblClick(Sender: TObject);
  27.     procedure ApplyFilter(Sender: TObject);
  28.     procedure FormCreate(Sender: TObject);
  29.     procedure Memo1Change(Sender: TObject);
  30.     procedure cbCaseSensitiveClick(Sender: TObject);
  31.     procedure cbNoPartialCompareClick(Sender: TObject);
  32.     procedure SBtnClearClick(Sender: TObject);
  33.     procedure ComboBox1Change(Sender: TObject);
  34.     procedure SBtnCloseClick(Sender: TObject);
  35.   end;
  36.  
  37. var
  38.   fmFilterFrm: TfmFilterFrm;
  39.  
  40. implementation
  41.  
  42. uses DM, CustView;
  43.  
  44. {$R *.DFM}
  45.  
  46. { Adds current listbox field name to memo. }
  47. procedure TfmFilterFrm.AddFieldName(Sender: TObject);
  48. begin
  49.   if Memo1.Text <> '' then
  50.     Memo1.Text := Memo1.Text + ' ';
  51.   Memo1.Text := Memo1.Text + ListBox1.Items[ListBox1.ItemIndex];
  52. end;
  53.  
  54. { Adds current Filter operator to memo. }
  55. procedure TfmFilterFrm.ListBox2DblClick(Sender: TObject);
  56. begin
  57.   if Memo1.Text <> '' then
  58.     Memo1.Text := Memo1.Text + ' '+ ListBox2.Items[ListBox2.ItemIndex];
  59. end;
  60.  
  61. procedure TfmFilterFrm.ApplyFilter(Sender: TObject);
  62. begin
  63.   with DM1.CustomerSource.Dataset do
  64.   begin
  65.     if ComboBox1.Text <> '' then
  66.     begin
  67.       Filter := ComboBox1.Text;
  68.       Filtered := True;
  69.       fmCustView.Caption := 'Customers - Filtered';
  70.     end
  71.     else begin
  72.       Filter := '';
  73.       Filtered := False;
  74.       fmCustView.Caption := 'Customers - Unfiltered'
  75.     end;
  76.   end;
  77. end;
  78.  
  79. { Populate the ListBox1 with available fields from the Customer Dataset. }
  80. procedure TfmFilterFrm.FormCreate(Sender: TObject);
  81. var
  82.   I: Integer;
  83. begin
  84.   for I := 0 to DM1.CustomerSource.Dataset.FieldCount - 1 do
  85.     ListBox1.Items.Add(DM1.Customer.Fields[I].FieldName);
  86.  
  87.   { Add date dependent Query ComboBox1. }
  88.   ComboBox1.Items.Add('LastInvoiceDate >= ''' +
  89.     DateToStr(EncodeDate(1994, 09, 30)) + '''');
  90.   ComboBox1.Items.Add('Country = ''US'' and LastInvoiceDate > ''' +
  91.     DateToStr(EncodeDate(1994, 06, 30)) + '''');
  92. end;
  93.  
  94. { Since the Filter property is a TStrings and the Memo field
  95.   is a TMemo, convert the Memo's wrapped text to a string,
  96.   which is then used when the user presses Apply. }
  97. procedure TfmFilterFrm.Memo1Change(Sender: TObject);
  98. var
  99.  I: Integer;
  100. begin
  101.   ComboBox1.Text := Memo1.Lines[0];
  102.   for I := 1 to Memo1.Lines.Count - 1 do
  103.     ComboBox1.Text := ComboBox1.Text + ' ' + Memo1.Lines[I];
  104. end;
  105.  
  106. { Set the Customer's Dataset Case Sensitive Filter Option. }
  107. procedure TfmFilterFrm.cbCaseSensitiveClick(Sender: TObject);
  108. begin
  109.   with DM1.CustomerSource.Dataset do
  110.     if cbCaseSensitive.checked then
  111.       FilterOptions := FilterOptions - [foCaseInSensitive]
  112.     else
  113.       FilterOptions := FilterOptions + [foCaseInsensitive];
  114. end;
  115.  
  116. { Set the Customer Partial Compare Filter Option. }
  117. procedure TfmFilterFrm.cbNoPartialCompareClick(Sender: TObject);
  118. begin
  119.   with DM1.CustomerSource.Dataset do
  120.     if cbNoPartialCompare.checked then
  121.       FilterOptions := FilterOptions + [foNoPartialCompare]
  122.     else
  123.       FilterOptions := FilterOptions - [foNoPartialCompare];
  124. end;
  125.  
  126. { Add User-Entered filters into list box at runtime. }
  127. procedure TfmFilterFrm.SBtnClearClick(Sender: TObject);
  128. var
  129.   st: string;
  130. begin
  131.   Memo1.Lines.Clear;
  132.   st := ComboBox1.Text;
  133.   ComboBox1.Text := '';
  134.   if ComboBox1.Items.IndexOf(st) = -1 then
  135.     ComboBox1.Items.Add(st);
  136. end;
  137.  
  138. { Reset the Memo field when the Filter ComboBox changes. }
  139. procedure TfmFilterFrm.ComboBox1Change(Sender: TObject);
  140. begin
  141.   Memo1.Lines.Clear;
  142.   Memo1.Lines.Add(ComboBox1.Text);
  143. end;
  144.  
  145. { Close the Filter Form. }
  146. procedure TfmFilterFrm.SBtnCloseClick(Sender: TObject);
  147. begin
  148.   Close;
  149. end;
  150.  
  151. end.
  152.